//
// Created by Yurzi on 2021/3/21.
//

/*
 * 回归预测相关
 * 包含部分矩阵运算函数
 */



#ifndef CEDUGROUPWORK_REGRESSIONPREDICTION_H
#define CEDUGROUPWORK_REGRESSIONPREDICTION_H

#include "DataTypes.h"
#include "ListOperations.h"
#include "GlobalDefinitions.h"

//判断2浮点数大小
int doublecmp(double x,double y);

//生成以原料id为索引的统计数据的链表
BinaryPair* initListFromMTById(LogNode *rear,int MtId);
//逆序
BinaryPair *reverseBList(BinaryPair *rear);

//初始化矩阵
void initMatrix(double **X_matrix,double **Y_matrix,int line,BinaryPair *list);

//进行曲线拟合
void fitingFunc(BinaryPair *list);

//矩阵乘法
void matrix_M(double **res_matrix,double **a_matrix,double **b_matrix,int line,int row,int middle);

//矩阵转置
void matrix_T(double **res_matrix,double **matrix,int line,int row);

//矩阵求逆
int  matrix_inv(double **matrix, int ndimen);

//预测函数
double toPredict(double x);
//生成随机二元对
BinaryPair *initrandomBainay();

#endif //CEDUGROUPWORK_REGRESSIONPREDICTION_H
